package one;// 1. 修改导入语句，使用 JUnit 4 的包
import one.Exercise;
import org.junit.Test;
import static org.junit.Assert.*;

public class ExerciseUnitTest {

    // 2. 将 @Test 注解改为 JUnit 4 的版本
    @Test
    public void testExerciseCount() {
        Exercise exercise = new Exercise(10);
        // 断言方法名和用法与 JUnit 5 基本相同
        assertEquals(10, exercise.getExpressions().size());
    }

    @Test
    public void testGeneratedExpressions() {
        Exercise exercise = new Exercise(5);
        for (Expression expr : exercise.getExpressions()) {
            int result = expr.getResult();
            assertTrue(result >= 0); // 结果非负

            // 验证除法结果是否为整数（通过算式字符串反推）
            String exprStr = expr.toString();
            if (exprStr.contains("/")) {
                // 注意：这里的字符串分割逻辑依赖于 Expression.toString() 的具体实现
                // 如果你的表达式格式是 "a / b = c"，那么这个逻辑是成立的
                String[] parts = exprStr.split(" / ");
                int num1 = Integer.parseInt(parts[0].trim());

                // 从 "b = c" 中提取出 b
                String[] rightPart = parts[1].split(" = ");
                int num2 = Integer.parseInt(rightPart[0].trim());

                // 检查是否能整除 (a % b == 0)
                // 原代码中的 num2 % num1 == 0 可能是一个逻辑错误，通常我们说 a / b 能整除，指的是 a 能被 b 整除
                assertTrue("除法 " + num1 + " / " + num2 + " 结果不是整数", num1 % num2 == 0);
            }
        }
    }
}